package bdsimple.impl.mysql;

import bdsimple.abstractfactory.AbstractFactoryDAO;
import bdsimple.dao.base.CiudadDAO;
import bdsimple.dao.base.ItemDAO;
import bdsimple.dao.base.PrecioItemCiudadDAO;
import bdsimple.dto.base.CiudadDTO;
import bdsimple.dto.base.ItemDTO;
import bdsimple.dto.base.PrecioItemCiudadDTO;
import dao.base.impl.BaseDTO;
import dao.base.impl.Reference;

public class PrecioItemCiudadDTOImpl extends BaseDTO implements
		PrecioItemCiudadDTO {

	public PrecioItemCiudadDTOImpl() {
		super(PrecioItemCiudadDAO.class);
	}

	// ---------------------------------------------------------------------------

	private int precio;

	// ---------------------------------------------------------------------------

	private Reference<CiudadDTO> ciudadDTORef = new Reference<CiudadDTO>(); 

	// ---------------------------------------------------------------------------

	private Reference<ItemDTO> itemDTORef = new Reference<ItemDTO>(); 

	// ---------------------------------------------------------------------------

	public int getPrecio() {
		return precio;
	}

	public void setPrecio(int precio) {
		this.precio = precio;
	}

	// ---------------------------------------------------------------------------

	public CiudadDTO getCiudadDTO() {
		if (ciudadDTORef.getRefValue() == null) {
			if (ciudadDTORef.getRefIdent() != 0) {
				try {

					// Lazy load the departmentDTORef
					CiudadDAO ciudadDAO = (CiudadDAO) AbstractFactoryDAO.getFactoryDAO(). //
						getDAO(CiudadDAO.class, connectionBean);

					ciudadDTORef.setRefValue( //
							(CiudadDTO) ciudadDAO.loadById(ciudadDTORef.getRefIdent()));

				} catch (Exception e) {
					e.printStackTrace();
					throw new RuntimeException(e);
				}
			}
		}

		return ciudadDTORef.getRefValue();
	}
	
	public Reference<CiudadDTO> getCiudadDTORef() {
		return ciudadDTORef;
	}

	public void setCiudadDTORef(CiudadDTO ciudadDTO) {
		this.ciudadDTORef.setRefValue(ciudadDTO);
	}

	// ---------------------------------------------------------------------------

	public ItemDTO getItemDTO() {
		if (itemDTORef.getRefValue() == null) {
			if (itemDTORef.getRefIdent() != 0) {
				try {

					// Lazy load the departmentDTORef
					ItemDAO itemDAO = (ItemDAO) AbstractFactoryDAO.getFactoryDAO(). //
						getDAO(ItemDAO.class, connectionBean);

					itemDTORef.setRefValue( //
							(ItemDTO) itemDAO.loadById(itemDTORef.getRefIdent()));

				} catch (Exception e) {
					e.printStackTrace();
					throw new RuntimeException(e);
				}
			}
		}

		return itemDTORef.getRefValue();
	}
	
	public Reference<ItemDTO> getItemDTORef() {
		return itemDTORef;
	}

	public void setItemDTORef(ItemDTO itemDTO) {
		this.itemDTORef.setRefValue(itemDTO);
	}

	// ---------------------------------------------------------------------------

}
